package conponent;

import java.util.List;

public interface MagicBall extends Entity,Runnable{
    /**
     * 魔法被创建生成(被视图渲染)前被视图调用函数，而非对象被创建。
     * 一般进行一些初始化操作，比如初始其生成位置，方向。
     */
    void beforeCreated();

    /**
     * 魔法与实体碰撞后被监控器调用函数
     * @param et 与魔法发送碰撞的实体
     */
    void afterCollision(Entity et);

    /**
     * 获取魔法的属性词条(该数组需要根据魔法属性的优先级进行排序，)
     * @return 存有魔法属性词条的数组(已排好序)
     */
    List<MagicProp> getProperty();

    /**
     * 添加魔法属性
     * @param mp 魔法属性
     */
    void addMagicProp(MagicProp mp);

    void addMagicProp(List<MagicProp> mpl);
    /**
     * 获取该魔法攻击的施法主体
     * @return 该魔法攻击的施法玩家对象
     */
    EntityComp getOwner();

    /**
     * 设置魔法球的发出者
     * @param ec
     */
    void setOwner(EntityComp ec);




}
